import java.util.Scanner;

/**
 * 编程找出 1000 以内的所有完数并打印出来。 所谓完数就是一个数恰好等于它的因子之和，如：6=1＋2＋3
 * @author cyt
 * @date 2020/6/6
 */
public class SecondQuestion {

    //计算一个正整数所有的因子之合
    public static int sumOfAllFactors(int input){
        //所有的正整数都有1作为它的因子，因此直接将sum初始化为1
        int sum = 1;
        //从2开始找因子
        for(int i = 2; i <= Math.sqrt(input); i++){
            if(input % i == 0) {
                sum += input / i;
                sum += i;
            }
        }
        return sum;
    }
    public static void main(String[] args){
        // 0 肯定不是完数，因此从1开始循环
        for(int i = 1; i <= 1000; i++){
            if(i == sumOfAllFactors(i)){
                System.out.print(i + " ");
            }
        }
    }
}
